package inner_class;

/**
 * 内部类
 * 1.大多是在：继承一个抽象类或者是实现某个接口 时才写内部类
 * 2.内部类可以访问外部类的所有数据，而外部类不可以访问内部类的一切数据
 * 3.加static把内部类
 */
public class Outer {
    //private int a=5;//类型为int的成员，与定义内部类对应
    private static  int a=5;//定义静态私有变量，与定义静态内部类对应
    public Inner1 inner;//类型为Inner1的成员
    public Outer() {//实例化方法定义
        inner = new Inner1();//内部类对象必须在本外部类实例化
    }

    //class Inner1 {   //定义内部类
    public static class Inner1 {//定义静态内部类
        private int ib;
        public int getIb() {//方法
            return ib+a;//内部类访问了外部类的数据，a属于外部类数据，ib属于内部
        }
        public void setIb(int ib) {//方法
            this.ib = ib;
        }

    }

    public void methodl() {
        class Inner2 { //在方法内定义的为局部内部类
        }
    }
}
